function upconverted_signal = upconvert_signal(baseband_signal, carrier_freq, fs)
% upconvert_signal - 将基带信号上变频到指定载波频率
%
% 输入参数:
%   baseband_signal - 基带调制信号
%   carrier_freq    - 载波频率 (Hz)
%   fs              - 采样频率 (Hz)
%
% 输出参数:
%   upconverted_signal - 上变频后的信号

% 创建时间向量
t = (0:length(baseband_signal)-1)/fs;

% 上变频 - 将复信号转换为实信号并上变频
% 基带复信号通过乘以复指数进行频谱搬移
upconverted_signal = real(baseband_signal .* exp(1i*2*pi*carrier_freq*t));

% 对上变频信号应用脉冲成型滤波器可以减少带外辐射
% 这里使用提升余弦滤波器进行脉冲成型
rolloff = 0.35;      % 滚降系数
span = 6;            % 滤波器符号跨度
sps = 8;             % 每符号采样点数

% 重采样信号以应用脉冲成型
upsampled = upsample(upconverted_signal, sps);

% 创建提升余弦滤波器
rrcFilter = rcosdesign(rolloff, span, sps, 'normal');

% 应用滤波器
upconverted_signal = filter(rrcFilter, 1, upsampled);

% 归一化信号功率
upconverted_signal = upconverted_signal / sqrt(mean(abs(upconverted_signal).^2));

end 